home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / 3D QuickTime Dynamics / kSan Headers / kSanAGPane.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-06-24  |  7.8 KB  |  242 lines

  1. #ifndef __kSanAGPane__
  2. #define __kSanAGPane__
  3.  
  4. #include <fp.h>
  5.  
  6. #include "OHBufferedView.h"
  7. #include "kSanObject.h"
  8. #include "kSanParticle.h"
  9. #include "kSanSimulationPublic.h"
  10. #include "kSanApplicationPublic.h"
  11. #include "kSanAGPanePublic.h"
  12. #include "kSanColourPlugIn.h"
  13.  
  14. #define kSetMouseModeButtonsMessage 'MMBM'
  15.  
  16. #define  AGPaneWindowPtr(ag)  (((OHWindow*)OHOCtr(ag))->window)
  17. #define     kNoSize 0
  18. #define     kSizeByAtomType 1
  19. #define     kSizeByWindow 2
  20. #define      kNoShade 0
  21. #define      kShadeByDepth 1
  22.  
  23. #define kMaxWindowHeight 100
  24. #define kMaxWindowWidth 100
  25. #define pWindowView 'view'
  26. #define  kMagnifyButton 5    
  27. #define  kUnmagnifyButton 6    
  28. #define  kCloserButton 7    
  29. #define  kFurtherButton 8    
  30. #define  kLargeBallButton 9    
  31. #define  kSmallBallButton 10    
  32. #define  kRollCellButton 11    
  33. #define  kSelectFingerButton 12    
  34.  
  35. #define  kMagnifyPictResID  200
  36. #define  kUnmagnifyPictResID  202
  37. #define  kQuestionMarkPictResID  186
  38. #define  kCloserPictResID  196
  39. #define  kFurtherPictResID  198
  40. #define  kLargeBallPictResID  192
  41. #define  kSmallBallPictResID  194
  42. #define  kRollCellPictResID  188
  43. #define  kSelectFingerPictResID  190
  44.  
  45. #define kNoColour 'null'
  46. #define kDefaultColour 'kSan'
  47.  
  48. #define  kMouseManipulation 0  // in ag->mode field
  49. #define  kSelectAndHighlight  1
  50. #define  kBondsVisible  1  // in ag->mode field
  51. #define  kBondsNotVisible  0
  52.  
  53. #define  kLinePairBlackColour 0
  54. #define  kLinePairRedColour 1
  55. #define  kLinePairGreenColour 2
  56. #define  kLinePairBlueColour 3
  57.  
  58. typedef struct cellManipType  
  59.  {
  60.     float latRotateAngle;
  61.     float longRotateAngle;
  62.     float axialRotateAngle;
  63.     float horizShift;
  64.     float vertShift;
  65.     float hikiShift;
  66.  }
  67.  cellManip;        
  68.  
  69. typedef struct LinePairType
  70. {
  71.     short start, end, colour;
  72. }
  73. LinePair;
  74.  
  75. typedef struct frameEdgeDataType
  76. {
  77.     Point edgePoints[6];
  78. }
  79. frameEdgeData;
  80.  
  81. typedef struct cubeFrameDataType
  82. {
  83.     frameEdgeData edge[12];
  84.     short cornerZValues[8];
  85.     short edgeOrder[12];
  86.     short edgeValues[12];
  87.     Point cornerPoints[8];
  88. }
  89. cubeFrameData;
  90.  
  91.  
  92. extern   cubeFrameData gCubeFrame;
  93. extern   LinePair gCubeEdges[12];
  94. extern   floatVector gCubeVerticies[8];
  95. extern   UniversalProcPtr  defaultSetAllColoursUPP;
  96.  
  97. /*
  98. typedef struct AGPaneType
  99. {
  100.     OHGWorldPane gwp;
  101.     long agPaneUniqueID;
  102.     
  103. }
  104. AGPane ;
  105. void  initAGPaneClass(void);
  106. short AGPaneConstructor (KozoDispatchStack *ds, constructorMethodArgs *cma);
  107. void  AGPaneDestructor (KozoDispatchStack *ds, destructorMethodArgs* dma);
  108. short AGPaneGetData (KozoDispatchStack *ds, getMethodArgs *gma);
  109. short AGPaneSetData (KozoDispatchStack *ds, setMethodArgs *sma);
  110. short AGPaneDoMessage (KozoDispatchStack *ds, doMessageMethodArgs *dmma);
  111.  
  112.  
  113. void  setForeColourNoShade(AGPane *ag, grafData *thisPart);
  114. void  setForeColourWithShade( AGPane *ag, grafData *thisPart);
  115. grafData * lockGrafData  (AGPane *ag) ;
  116. short    AGPaneDoDialog    (OHObject *agObj);
  117. void releaseGrafData  (AGPane *ag); 
  118.  
  119. short  NewAGPane(AEDesc *props,  OHObject * cont,   OHObject **theObj);
  120. short AGPaneIdle(OHView *view, EventRecord *event);
  121.  
  122. short AGPaneDoKey(OHView *view, char *theChar);
  123.  
  124. void initVectorsAndVertices(void);
  125. void initCellManip(AGPane *ag);
  126. void initializeWindowOrderList(AGPane *ag);
  127. short addParticleList (AGPane *ag,  OHList *newPartList);
  128. short AGPaneAddToPartList(AGPane *ag, long partToAdd);
  129. void AGPaneChangeParticleIndex(AGPane * ag, long oldIndex, long newIndex);
  130.  
  131. short AGPaneRemoveParticle(AGPane *ag, long whichPart);
  132.  
  133. void defaultGrafData (grafData * gPtr);
  134.  
  135. void defaultView(viewInfo *dView);
  136. void    AGPaneDoMouseModeSwitch    (AGPane *ag);
  137. void setMouseModeButtons(AGPane *ag);
  138.  
  139. void     doSelectedRotate(AGPane *ag, char myKeyCode, short timesFive);
  140. void getAngles(AGPane *ag,char myKeyCode,float * latAngle,float * longAngle,float * spinAngle);
  141. void AGPaneSetWindowCenter(AGPane *ag);
  142.  
  143. void doShowBondsSwitch    (AGPane *ag);
  144. void setShowBondsMenuItem (AGPane *ag,short nowShowing);
  145. short grafDataResize   (AGPane *ag, long numParts) ;
  146.  
  147. short particleIsInWindow (AGPane *ag, long whichPart);
  148.  
  149. // draw
  150. void  AGPaneMakeWorld(OHGWorldPane *gwp);
  151.  
  152. void     sortParticles(AGPane *ag);
  153. void findLinePoints(AGPane *ag, cubeFrameData *thisFrame,  newMatrixDPtr trix);
  154. void    setLineOrder(short * lineValPtr, short * lineOrderPtr);  // sort by zval
  155. void     checkLineOrder( short index, short * myPtr,short * lineValPtr);
  156. void    drawLines( cubeFrameData *thisFrame, short begin, short end);
  157.  
  158. void drawContents(AGPane *ag);
  159. void  findParticles(AGPane *ag, particle * part);
  160. void applyShadeToWindow(AGPane *ag);
  161. void   findBonds(AGPane *ag, particle * part);
  162. void    adjustForDepth( floatVecPtr centerVec, viewInfo *theView, float viewLen);
  163.  
  164. // clicks
  165. void    AGPaneHandleRollChoice    (AGPane *ag, short item);
  166. void    AGPaneHandlePushChoice    (AGPane *ag, short item);
  167.  
  168. void     AGPaneKeypadRotate (AGPane *ag, char myKeyCode, short timesFive);
  169. void     AGPaneArrowMove  (AGPane *ag, char myKeyCode, short timesFive, short selectedOnly);
  170. short AGPaneDoClick ( OHView *view, EventRecord *eventPtr, Point offset);
  171. void AGPaneSelectHighlightClick (AGPane *ag, EventRecord *eventPtr, Point offset, short mouseStillDown, short wasADoubleClick)    ;            
  172. void AGPaneDragMove (AGPane *ag,EventRecord *eventPtr, Point offset)  ;
  173. void AGPaneDragSelect   (AGPane *ag, Point where, Point offset,  short shiftKeyWasDown);
  174.  
  175. void AGPaneSetDragActiveRegion(AGPane *ag, RgnHandle activeRegion);
  176. void AGPaneDragRotate (AGPane *ag,Point startPoint, Point offset);
  177. short AGPaneWasClickInParticle(AGPane *ag,Point where, long * whichParticle);
  178. void AGPaneHandleKeyDown(AGPane *ag,char theChar);
  179.  
  180. //get set
  181. short setColourMethodMenuChoice(AGPane *ag,  short menuIndex);
  182. short setColourPlugIn(AGPane *ag, DescType  colourClass);
  183. short  AGSetModule( AGPane *ag, DescType theProp, AEDesc *dataDesc);
  184.  
  185.  
  186.  
  187. void setAGScrollBars (AGPane *ag);
  188. void setDefaultAGTitle(AGPane *ag, Handle ownerName);
  189. void calcScrollValues(AGPane *ag);
  190.  
  191. void setScrollValues(AGPane *ag);
  192. void setBondsVisible    (AGPane *ag, short viz);
  193. void   setViewMatrix(AGPane *ag, newMatrixF *trix);
  194. void   setBGColour(AGPane *ag, RGBColor * colour);
  195.  
  196. short AGPaneGetData (KozoDispatchStack *ds, getMethodArgs *gma);
  197. short  AGPaneSetData (KozoDispatchStack *ds, setMethodArgs *sma);
  198.  
  199. long  getColourMethod(AGPane *ag);
  200. long  getSizeMethod(AGPane *ag);
  201. long  getShadeMethod(AGPane *ag);
  202. long  getGraphicsMethod(AGPane *ag, long descriptorType);
  203. short setColourMethod (AGPane *ag,  long enumeratedID);
  204. short setSizeMethod (AGPane *ag, long enumeratedID);
  205. short setShadeMethod (AGPane *ag, long enumeratedID);
  206. short setGraphicsMethod (AGPane *ag, long descriptorType, long enumeratedID);
  207. short  agSetView  (AGPane *ag, viewInfo *theView);
  208.  
  209. void AGPaneSetCenter(AGPane *ag, short hVal, short vVal);
  210. void AGPaneSetSize(AGPane *ag, short newHeight, short newWidth);
  211.  
  212. void AGPaneSetMouseMode(AGPane *ag, short whichMode);
  213. void   setMagnification(AGPane *ag, float val);
  214. void   setPerspective(AGPane *ag, float val);
  215. void   setParticleSize(AGPane *ag, float val);
  216. void   setShadeRange(AGPane *ag, float val);
  217. void   setShadeEven(AGPane *ag, float val);
  218. void   setMinimumPE(AGPane *ag, float val);
  219. void   setMinimumKE(AGPane *ag, float val);
  220. void   setMinimumTE(AGPane *ag, float val);
  221. void   setMaximumPE(AGPane *ag, float val);
  222. void   setMaximumKE(AGPane *ag, float val);
  223. void   setMaximumTE(AGPane *ag, float val);
  224. void   setMaximumNN(AGPane *ag, float val);
  225. void   setMinimumNN(AGPane *ag, float val);
  226.  
  227. float setNoSize(AGPane *ag, viewInfo *theView, particle *thePart);
  228. float setMySizeByAtomType(AGPane *ag, viewInfo *theView,particle *thePart);
  229. float setMySizeByWindow(AGPane *ag, viewInfo *theView, particle *thePart);
  230. float setNoActualSize(AGPane *ag, viewInfo *theView, particle *thePart);
  231. float setMyActualSizeByAtomType(AGPane *ag, viewInfo *theView, particle *thePart);
  232. float setMyActualSizeByWindow(AGPane *ag, viewInfo *theView, particle *thePart);
  233. float   getMagnification(AGPane *ag);
  234. float   getPerspective(AGPane *ag);
  235. float   getShadeRange(AGPane *ag);
  236. float   getShadeEven(AGPane *ag);
  237.  
  238. short    DoCellManipulationDialog    (OHObject *winObj);
  239. */
  240.  
  241. #endif
  242.